
#include <string.h>
#include "algorithm.h"
// #include "algo_def.h"

static algo_evt_handle_t m_algo_callback = NULL;


#define ALGO_PEDO_STEPS_UPDATE( value ) do{\
        algo_evt_t event;\
        event.type = ALGO_EVT_TYPE_STEPS;\
        event.params.steps = value;\
        algo_lib_event_handle( &event );\
}while( 0 )

#define ALGO_PEDO_ACTIVITY_UPDATE() do {\
    algo_evt_t event;\
    event.type = ALGO_EVT_TYPE_ACTIVITY;\
    event.params.activity = 1;\
    algo_lib_event_handle( &event );\
}while(0)

#define ALGO_PEDO_STATIC_UPDATE( ) do{\
        algo_evt_t event;\
        event.type = ALGO_EVT_TYPE_STATIC;\
        algo_lib_event_handle( &event );\
}while(0)



#define ALGO_PEDO_POSITION_UPDATE( pos ) do{\
        algo_evt_t event;\
        event.type = ALGO_EVT_TYPE_POSITON_CHANGE;\
        event.params.position = pos; \
        algo_lib_event_handle( &event );\
}while(0)

#define ALGO_PEDO_RAISE_UPDATE( ACTIVED ) do{\
        algo_evt_t event;\
        event.type = ACTIVED ? ALGO_EVT_TYPE_RAISED_ACTIVE : ALGO_EVT_TYPE_RAISED_REMOVE;\
        algo_lib_event_handle( &event );\
}while(0)

// uint16_t algo_lib_version_get(void)
// {
//     return ALGO_VERSION; 
// }
// const char* algo_lib_version_get_str(void)
// {
//     return ALGO_VERSION_STR; 
// }

void algo_lib_callback_register(algo_evt_handle_t cb)
{
    if( m_algo_callback == NULL)
    {
        m_algo_callback = cb; 
    }
}

void algo_lib_event_handle( algo_evt_t * p_evt )
{
    if( m_algo_callback != NULL )
    {
        m_algo_callback( p_evt );
    }
}

